今天最主要談論的問題是利用Estimator API創建分散式的訓練(Lab Solution: Creating a distributed training TensorFlow model with Estimator API),會使用estimator.train_and_evaluate同時觀察驗證指標的重要性;一樣先創建notebooks接著切換至training-data-analyst > courses > machine_learning > deepdive > 03_tensorflow > labs 打開d_traineval.ipynb,開始進行實驗。
首先引入函式庫,接著將資料輸入以及定義特徵,這邊就不在重複,上一篇有完整的解析。
如果是利用JSON的方法輸入資料
serving input function
的方法來取得資料,此方法是為了以利以後做開發。estimator
是甚麼這邊使用的是LinearRegressor
,所以輸出會是連續性的數值
TrainSpec
讀取訓練資料LatestExporter
語法能在往後有資料從外部輸入轉成所需特徵或是要被外部所使用的資料EvalSpec
讀取valid dataset,同時設定相關參數。講了這麼多實驗相信大家也聽到頭昏眼花了吧,這邊就幫大家整理出來,是常見的問題以解決方法,若是以後遇到相關的問題,可以參考這些方式來做調整。
問題 | 解決方式 |
---|---|
超出記憶體的資料 | Dataset API |
想要做分散式架構 | train_and_evaluate |
需要驗證在訓練當中 | train_and_evaluate + TensorBoard |
需要部署至其他地方 | serving input function |
而在實驗中沒有仔細講到Deployments that scale這個問題,所以在這邊特別提及一下,我們都知道左邊是我們一般訓練的流程,但今天如果是serve接收檔案,資料不可能那麼完美,大多是使用JSON的格式來讀取資料,那就會有一個問題了,我麼知道特徵跟答案之間的區別;這邊estimator提供一種方法來解析export.ServingInputReceiver (features,json),透過上述方法可以回傳所需的特徵與答案,只要透過estimator.LatestExporter呼叫就能解析JSON檔案,我們就能夠與serve串接的方式進行線上預測的方法。
※圖片參考至 Intro to TensorFlow resource